package studio.servletArmado;

import java.io.IOException;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;



import studio.excepcion.DAOExcepcion;
import studio.modelo.Administrador;
import studio.modelo.Armado;
import studio.modelo.InstBasico;
import studio.modelo.Instrumento;
import studio.modelo.TipoRecurso;
import studio.negocio.SeguridadInstrumento;

/**
 * Servlet implementation class SerRegInstArmado
 */
public class SerRegInstArmado extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SerRegInstArmado() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession sesion = request.getSession();
		Administrador objAdm=(Administrador)sesion.getAttribute("Admin_Actual");
		if (objAdm==null)
		{
			response.sendRedirect("Login.jsp");
		}
		else
		{
			///Parametros Recibidos
			int idInstruSelec=Integer.parseInt(request.getParameter("intrume"));//intrume
			double Costo=Double.parseDouble(request.getParameter("precio"));
			int cantidad =Integer.parseInt(request.getParameter("canti"));
			int idTipoRec=Integer.parseInt(request.getParameter("recurso"));
			
			Armado objArmadoSesion=(Armado)sesion.getAttribute("Armado");
			
			if (objArmadoSesion!=null)
				{			
						System.out.println("instru " + idInstruSelec);
						System.out.println("costo " + Costo);
						System.out.println("canti " +cantidad );
						System.out.println("idtipo "+ idTipoRec);
						
						objArmadoSesion.setObjAdmin(objAdm);
						
						Date now = new Date();
						DateFormat formatofecha = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
						String fecha = formatofecha.format(now);
						objArmadoSesion.setFecha(fecha);
						
						Collection<InstBasico> LstInstrum = new ArrayList<InstBasico>();
						LstInstrum=objArmadoSesion.getInstbasicos();
						
						int contador=0;
						for (InstBasico objBasic : LstInstrum) {
							if ((objBasic.getIdInstrumento()==idInstruSelec) && (objBasic.objTipRecur.getIdTipoRecurso()==idTipoRec ))
							{
								int cant=0;
								cant=objBasic.getQtInstBasico()+cantidad;
								objBasic.setQtInstBasico(cant);
								double importe=0;
								importe=objBasic.getCostoxHora()*cant;
								DecimalFormat formateador = new DecimalFormat("###0.##");
								try {
									importe=formateador.parse(formateador.format(importe)).doubleValue();
								} catch (ParseException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
								objBasic.setImporte(importe);
								contador++;
							}
						}
						
						if (contador==0)
						{						
							Instrumento instru =new Instrumento();
							SeguridadInstrumento sgInt_1=new SeguridadInstrumento();
							
							InstBasico basico = new InstBasico();
													
							try {
								instru=sgInt_1.RetornaInstrumento(idInstruSelec);
								basico.setIdInstrumento(instru.getIdInstrumento());
								basico.setCaracteristicas(instru.getCaracteristicas());
								basico.setCostoxHora(Costo);
								basico.objTipIntru.setIdTipo(instru.objTipIntru.getIdTipo());
								basico.objTipIntru.setDescripcion(instru.objTipIntru.getDescripcion());
								
								TipoRecurso recurso = new TipoRecurso();
								recurso=sgInt_1.RetornaTipoRecurso(idTipoRec);
								basico.setObjTipRecur(recurso);
								basico.setQtInstBasico(cantidad);
								basico.setImporte(Costo * cantidad);
								LstInstrum.add(basico);
								
								objArmadoSesion.setInstbasicos(LstInstrum);
								sesion.setAttribute("Armado", objArmadoSesion);
								response.sendRedirect("ArmadoSala.jsp");
							} catch (DAOExcepcion e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						else
						{
							objArmadoSesion.setInstbasicos(LstInstrum);
							sesion.setAttribute("Armado", objArmadoSesion);
							response.sendRedirect("ArmadoSala.jsp");
						}
				}
			else
				{
					Armado armadoNuevo= new Armado();
					System.out.println("instru " + idInstruSelec);
					System.out.println("costo " + Costo);
					System.out.println("canti " +cantidad );
					System.out.println("idtipo "+ idTipoRec);
					
					armadoNuevo.setObjAdmin(objAdm);
					
					Date now = new Date();
					DateFormat formatofechaNuevo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					String fechaNuevo = formatofechaNuevo.format(now);
					armadoNuevo.setFecha(fechaNuevo);
					
					Collection<InstBasico> LstInstrumNuevo = new ArrayList<InstBasico>();
				//	LstInstrum=armadoNuevo.getInstbasicos();
					
					Instrumento instruNuevo =new Instrumento();
					SeguridadInstrumento sgInt_1Nuevo=new SeguridadInstrumento();
					
					InstBasico basicoNuevo = new InstBasico();
					System.out.println("hasta aqui llego");
					
					try {
						instruNuevo=sgInt_1Nuevo.RetornaInstrumento(idInstruSelec);
						basicoNuevo.setIdInstrumento(instruNuevo.getIdInstrumento());
						basicoNuevo.setCaracteristicas(instruNuevo.getCaracteristicas());
						basicoNuevo.setCostoxHora(Costo);
						basicoNuevo.objTipIntru.setIdTipo(instruNuevo.objTipIntru.getIdTipo());
						basicoNuevo.objTipIntru.setDescripcion(instruNuevo.objTipIntru.getDescripcion());
						
						TipoRecurso recursoNuevo = new TipoRecurso();
						recursoNuevo=sgInt_1Nuevo.RetornaTipoRecurso(idTipoRec);
						basicoNuevo.setObjTipRecur(recursoNuevo);
						basicoNuevo.setQtInstBasico(cantidad);
						basicoNuevo.setImporte(Costo * cantidad);
						LstInstrumNuevo.add(basicoNuevo);
						
						armadoNuevo.setInstbasicos(LstInstrumNuevo);
						sesion.setAttribute("Armado", armadoNuevo);
						response.sendRedirect("ArmadoSala.jsp");
					} catch (DAOExcepcion e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
				}
//
//		Date now = new Date();
//		DateFormat formatofecha = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		String fecha = formatofecha.format(now);
//		objArmado.setFecha(fecha);
//		
//		Collection<InstBasico> LstInstrum = new ArrayList<InstBasico>();
//		LstInstrum=objArmado.getInstbasicos();
//		
//		Instrumento instru =new Instrumento();
//		SeguridadInstrumento sgInt_1=new SeguridadInstrumento();
//		
//		InstBasico basico = new InstBasico();
//		System.out.println("hasta aqui llego");
//		try {
//			instru=sgInt_1.RetornaInstrumento(idInstruSelec);
//			basico.setIdInstrumento(instru.getIdInstrumento());
//			basico.objTipIntru.setIdTipo(instru.objTipIntru.getIdTipo());
//			basico.objTipIntru.setDescripcion(instru.objTipIntru.getDescripcion());
//			
//			TipoRecurso recurso = new TipoRecurso();
//			recurso=sgInt_1.RetornaTipoRecurso(idTipoRec);
//			basico.setObjTipRecur(recurso);
//			basico.setQtInstBasico(cantidad);
//			basico.setImporte(instru.getCostoxHora() * cantidad);
//			LstInstrum.add(basico);
//			
//			objArmado.setInstbasicos(LstInstrum);
//			sesion.setAttribute("Armado", objArmado);
//			response.sendRedirect("ArmadoSala.jsp");		
//		} catch (DAOExcepcion e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		}
	}

}
